extends Button

@onready var button : Button = get_node(".")

#просто ид для возврата вызывающей стороне
var id : int = -1 : set = set_id
func set_id(new_val : int):
	print("DEBB:: button id: ", new_val)
	id = new_val
#текстовый интерфейс к тексту самой кнопки для установки вызывающей стороной
var text_interface : String = "" : set = _set_text, get = _get_text
func _set_text(new_val : String):
	if (button):
		button.text = new_val
	else:
		text_interface = new_val
func _get_text() -> String:
	if (button):
		return button.text
	else:
		return text_interface

#селлектор текущей категории, меняет цвет кнопки и бросает сигнал, если нужно
#свернуть/развернуть категорию
@export var is_current : bool = false : set = _set_currently
signal open_category(category_id: int)
signal close_category(category_id: int)
func _set_currently(new_val : bool):
	is_current = new_val
	if new_val:
		button.theme = load("res://categoty_btn/curr_btn.tres")
		open_category.emit(id)
		print("activated id: ", id)
	else:
		button.theme = load("res://categoty_btn/simple_btn.tres")
		close_category.emit(id)
		print("deactivated id: ", id)
	

func _ready():
	button.pressed.connect(func():is_current=!is_current)
#т.к. к моменту когда объявлен интерфейс и он заполняется, 
#объект кнопки ещё нулловый, то здесь он уже активен, заполним его.
	button.text = text_interface
